import { Button, Form, FormButtons, FormField, FormSubmitButton, ListItem, Loading, Select, Text, } from '@umami/react-zen'; import { type Key, useState } from 'react'; import { useLoginQuery, useMessages, useUpdateQuery, useUserTeamsQuery, useWebsite, } from '@/components/hooks'; import { ROLES } from '@/lib/constants'; export function WebsiteTransferForm({ websiteId, onSave, onClose, }: { websiteId: string; onSave?: () => void; onClose?: () => void; }) { const { user } = useLoginQuery(); const website = useWebsite(); const [teamId, setTeamId] = useState(null); const { formatMessage, labels, messages, getErrorMessage } = useMessages(); const { mutateAsync, error, isPending } = useUpdateQuery(`/websites/${websiteId}/transfer`); const { data: teams, isLoading } = useUserTeamsQuery(user.id); const isTeamWebsite = !!website?.teamId; const items = teams?.data?.filter(({ members }) => members.some( ({ role, userId }) => [ROLES.teamOwner, ROLES.teamManager].includes(role) && userId === user.id, ), ) || []; const handleSubmit = async () => { await mutateAsync( { userId: website.teamId ? user.id : undefined, teamId: website.userId ? teamId : undefined, }, { onSuccess: async () => { onSave?.(); onClose?.(); }, }, ); }; const handleChange = (key: Key) => { setTeamId(key as string); }; if (isLoading) { return ; } return (
{formatMessage( isTeamWebsite ? messages.transferTeamWebsiteToUser : messages.transferUserWebsiteToTeam, )} {!isTeamWebsite && ( )} {formatMessage(labels.transfer)}
); }